9896. Средняя
цена
Вы отсканировали цены на
несколько продуктов для продажи. Теперь Вы хотите определить среднюю цену
товара. К сожалению, Вы были неаккуратны, и, возможно, отсканировали некоторые
продукты более одного раза. Тем не менее, Вы знаете, что каждый продукт был отсканирован
хотя бы один раз, и что ни у одного из двух продуктов нет одинаковой цены.
Найти среднюю цену товара.
Вход. Первая строка содержит
количество цен n (n ≤ 50). Следующая строка содержит n
натуральных чисел (не больших 10000) – отсканированные цены.
Выход. Выведите среднюю цену товара
с 4 десятичными знаками.
Пример
входа |
Пример
выхода |
3 5 7 5 |
6.0000 |
структуры
данных – set
Занесем все отсканированные цены
товаров во множество s. Таким образом будут уничтожены дубликаты. Число
элементов множества равно количеству продуктов в наличии. Средняя цена товара
вычисляется как частное суммы стоимостей всех товаров и их количества s.size().
Пример
В приведенном примере
отсканировали ценники двух товаров стоимостью 5 и 7 (товар с ценой 5 был
отсканирован дважды).
Средняя цена товаров равна (5 + 7) / 5 = 6.
Реализация алгоритма
Читаем
входные значения. Все цены заносим во множество s.
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &x);
s.insert(x);
}
Находим
сумму sum всех чисел во множестве – стоимость всех продуктов.
sum = 0;
for (iter = s.begin(); iter != s.end(); iter++)
sum += *iter;
Вычисляем
и выводим среднюю цену товара. Для этого общую стоимость sum следует поделить на количество продуктов s.size(). Результатом деления должно
получиться действительное число.
printf("%.4lf\n", 1.0 * sum / s.size());